package com.wy.tingshu.servlet.tarck;

import com.wy.tingshu.repository.TrackRepo;
import com.wy.tingshu.util.Log;
import com.wy.tingshu.view_object.UserVO;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

/**
 * @author 美女
 * @date 2022/07/16 10:15
 **/
@WebServlet("/studio/track/upload.do")
//要接受enctype==multipart/formdata 的form表单数据，必须要使用@MultipartConfig修饰，忘记修饰有500错误
@MultipartConfig
public class UploadDoServlet extends HttpServlet {
    private final TrackRepo trackRepo=new TrackRepo();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.用户登录则获取用户信息
        UserVO userVO=null;
        HttpSession session=req.getSession(false);
        if(session!=null){
            userVO=(UserVO) session.getAttribute("currentUser");//session的用户是登陆时放入的
        }
        //用户没有登录则直接提示用户必须先登录(向浏览器返回打印)
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/plain");
        PrintWriter writer = resp.getWriter();
        if(userVO==null){
            Log.println("用户未登录");
            writer.println("用户未登录,必需登陆后才能上传,请返回创作中心登录");
            return;
        }
        //此时用户一定登录了
        Log.println("登录用户为："+userVO);
        //2.从请求中获取我们需要的信息
        req.setCharacterEncoding("utf-8");
        String title=req.getParameter("title");//音频名称
        Log.println("读取到的title是"+title);//增加打印
        Part track=req.getPart("track");//读取音频
        String type=track.getContentType();//音频类型
        Log.println("读取到的type是"+type);//增加打印
        InputStream contentInputStream = track.getInputStream();//可以从这个InputStream中读取出音频内容

        //3.将拿到的数据插入到表中
        //由于做的操作比较简单，就不引入service了，直接使用trackRepo对象
        trackRepo.insert(userVO.uid,title,type,contentInputStream);//调用TrackPepo中都插入操作，向数据库中插入获取到的音频各元素
        Log.println("上传成功");
        //4.响应插入成功
        writer.println("上传成功");

        resp.sendRedirect("/studio/track/upload.html");
    }
}
